// 定义包名为 com.jlnk.androiduidemo.Adapter
package com.jlnk.androiduidemo.Adapter;

// 导入Android开发所需的库和组件
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import com.jlnk.androiduidemo.StudentActivity; // 导入StudentActivity类
import com.jlnk.androiduidemo.R; // 导入资源类
import com.jlnk.androiduidemo.entity.User; // 导入User实体类

import java.util.List; // 导入List接口

// 定义一个继承自 ArrayAdapter<User> 的类 StudentArrayAdapter，用于为ListView提供数据和视图
public class StudentArrayAdapter extends ArrayAdapter<User> {

    // 构造函数，接收一个StudentActivity的上下文和用户列表
    public StudentArrayAdapter(StudentActivity context, List<User> users) {
        super(context, 0, users); // 调用父类的构造函数，传入上下文和用户列表
    }

    // getView 方法是适配器的核心，用于为每个列表项创建和绑定视图
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // Get the data item for this position 根据位置获取数据项
        User user = getItem(position); // 获取当前位置的用户对象

        // Check if an existing view is being reused, otherwise inflate the view
        // 检查是否有正在使用的现有视图，如果没有，则进行视图填充
        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_user, parent, false);
            // 如果convertView为null，则使用LayoutInflater来填充item_user布局
        }

        // Lookup view for data population
        // 查找需要填充数据的视图
        TextView tvClassName = (TextView) convertView.findViewById(R.id.tvClassName);
        TextView tvStudentId = (TextView) convertView.findViewById(R.id.tvStudentId);
        TextView tvName = (TextView) convertView.findViewById(R.id.tvName);

        // Populate the data into the template view using the data object
        // 使用数据对象将数据填充到模板视图中
        tvClassName.setText("班级：" + user.getClass_name()); // 设置班级名称
        tvStudentId.setText("学号：" + user.getStudent_id()); // 设置学号
        tvName.setText("姓名：" + user.getName()); // 设置姓名

        // Return the converted view to be inserted into the list
        // 返回转换后的视图，以便将其插入到列表中
        return convertView;
    }
}